import axios from 'axios';
import envconfig from '@/envconfig/envconfig';
/**
 * 主要params参数
 * @params method {string} 方法名
 * @params url {string} 请求地址  例如：/login 配合baseURL组成完整请求地址
 * @params baseURL {string} 请求地址统一前缀 ***需要提前指定***  
 * @params timeout {number} 请求超时时间 默认 30000
 * @params params {object}  get方式传参key值
 * @params headers {string} 指定请求头信息
 * @params withCredentials {boolean} 请求是否携带本地cookies信息默认开启
 * @params validateStatus {func} 默认判断请求成功的范围 200 - 300
 * @return {Promise}
 * 其他更多拓展参看axios文档后 自行拓展
*/

class Server {

  constructor(){
    axios.defaults.headers['Content-Type'] = 'application/json';
  }

  axios(method, url,params,data){
    url = this.buildUrl(url);
    return new Promise((resolve, reject) => {
      if(typeof params !== 'object') params = {};
       let _option = {
        method,
        url,
        baseURL: envconfig.baseURL,
        timeout: 30000,
        params: params,
        data: data,
        headers: null,
        withCredentials: true, //是否携带cookies发起请求
        validateStatus:(status)=>{
            return status >= 200 && status < 300;
        }
      }
      axios.request(_option).then(res => {
         let data = typeof res.data === 'object' ? res.data : JSON.parse(res.data);
         data.isSuccess = !data.status;
        resolve(data);
      },error => {
        //不是404
        console.log("请求失败");
      })
    })
  }

  buildUrl(url,ids){
    // url= url+'.json';
    if(ids){


    }
    return url;
  }
 
  getReq(url,params){
    return this.axios("get",url,params);
  }

  postReq(url,data){
    return this.axios("post",url,null,data);
  }

  patchReq(url,data){
    return this.axios("patch",url,null,data);
  }

  putReq(url,data){
    return this.axios("put",url,null,data);
  }

  deleteReq(url,data){
    return this.axios("delete",url,null,data);
  }

}

export default new Server();